package com.lanyou.esb.repository;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.Repository;
import org.springframework.data.rest.core.annotation.RestResource;

import com.lanyou.esb.entity.IfParameter;

public interface IfParameterRepository
		extends Repository<IfParameter, String>, JpaSpecificationExecutor<IfParameter> {
	
	List<IfParameter> findByHttp_idAndType(String id,String type);
	
	long count();
	
	boolean exists(String id);
	
	@RestResource(exported = true)
	<S extends IfParameter > S save(S entity);	// could expose REST API
	
	<S extends IfParameter > List<S> save(Iterable<S> entities);
	
	@RestResource(exported = true)
	IfParameter  findOne(String id);	// could expose REST API
	
	IfParameter  getOne(String id);
	
	// 以下三个接口只能选一个暴露为REST API
	
	@RestResource(exported = false)
	List<IfParameter > findAll();	// could expose REST API
	
	@RestResource(exported = false)
	List<IfParameter > findAll(Sort sort);	// could expose REST API
	
	@RestResource(exported = true)
	Page<IfParameter > findAll(Pageable pageable);	// could expose REST API
	
	List<IfParameter > findAll(Iterable<String> ids);
	
	// 以下两个接口，要么都暴露为REST API，要么都不暴露
	@RestResource(exported = true)
	void delete(String id);	// could expose REST API
	
	@RestResource(exported = true)
	void delete(IfParameter entity);	// could expose REST API
	
	void delete(Iterable<? extends IfParameter> entities);
	
	void deleteAll();
	
	void flush();
	
	<S extends IfParameter > S saveAndFlush(S entity);
	
	void deleteInBatch(Iterable<IfParameter > entities);
	
	void deleteAllInBatch();

	
}
